package com.jieao.template.service;

import com.github.pagehelper.PageInfo;
import com.jieao.template.entity.pub.Pagination;
import com.jieao.template.entity.roleMgr.AssignmentPermissionDTO;
import com.jieao.template.entity.roleMgr.RoleDO;

import java.util.List;

/**
 * 角色表(Role)表服务接口
 *
 * @author jzw
 * @since 2020-04-30 09:31:15
 */
public interface RoleService
{


    /**
     * 获取当前登录用户的角色
     *
     * @param
     * @return java.util.List<java.lang.String>
     * @author Jzw
     * @date 2019/12/27 15:40
     */
    List<String> getAllRolesByUserId();

    /**
     * 给角色分配权限
     *
     * @param assignmentPermissionDTO
     * @return void
     * @author Jzw
     * @date 2019/12/17 16:25
     */
    void assignmentPermissionForRole(AssignmentPermissionDTO assignmentPermissionDTO);

    /**
     * 启禁用角色
     *
     * @param roleId 角色id
     * @return java.lang.Object
     * @author Jzw
     * @date 2019/12/13 13:49
     */
    void disOrEnaAccount(String roleId);

    /**
     * 获取当前角色已选的权限
     *
     * @param id 角色id
     * @return java.util.List<java.lang.String>
     * @author Jzw
     * @date 2019/12/17 16:21
     */
    List<String> listCheckedPermissionForRole(String id);

    /**
     * 获取用户关联的角色
     *
     * @param id 用户id
     * @return java.lang.Object
     * @author Jzw
     * @date 2019/12/30 11:09
     */
    String getRoleByUserId(String id);

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     * @author jzw
     * @since 2020-04-30 09:31:15
     */
    RoleDO queryById(String id);

    /**
     * 查询分页数据
     *
     * @param pagination 分页信息
     * @return PageInfo对象
     * @author jzw
     * @since 2020-04-30 09:31:15
     */
    PageInfo<RoleDO> queryAllByLimit(Pagination pagination);

    /**
     * 查询全部数据
     *
     * @param role 筛选对象
     * @return 列表数据
     * @author jzw
     * @since 2020-04-30 09:31:15
     */
    List<RoleDO> queryAll(RoleDO role);

    /**
     * 新增数据
     *
     * @param role 实例对象
     * @return 实例对象
     * @author jzw
     * @since 2020-04-30 09:31:15
     */
    RoleDO insert(RoleDO role);

    /**
     * 修改数据
     *
     * @param role 实例对象
     * @return 实例对象
     * @author jzw
     * @since 2020-04-30 09:31:15
     */
    int update(RoleDO role);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     * @author jzw
     * @since 2020-04-30 09:31:15
     */
    boolean deleteById(String id);

    /**
     * 通过主键集合批量删除数据
     *
     * @param idList 主键集合
     * @author jzw
     * @since 2020-04-30 09:31:15
     */
    void batchDeletionByIdList(List<String> idList);

}